#!/bin/bash
 	
(while true
do 

###############################################################################
# Verificar que la inicialización del ambiente fue realizada.

if [[ $INICIAW5_EJECUTADO_EXITOSAMENTE != 1 ]]; then
    LoguearW5.sh "DetectaW5" "E" "El ambiente no fue inicializado"
    exit 1
fi

############################################################################### 
# Verificar que no haya otra instancia corriendo.

if [ $(ps ax | grep -v grep | grep DetectaW5 | wc -l) -gt 2 ]; then
	LoguearW5.sh "DetectaW5" "E" "DetectaW5 ya se encuentra corriendo."	
	exit 1
fi


###############################################################################
# Iniciar Demonio
# Verificar que el formato del nombre del archivo sea correcto: CodigoDelSistema_aaaa-mm-dd
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for filename in $(ls ${ARRIDIR} |
     grep -v "^[0-9a-zA-Z]\{1,\}_[0-9]\{4\}-[0-1][0-9]-[0-3][0-9]$"); do
     MoverW5.sh "${ARRIDIR}${filename}" "${RECHDIR}" "DetectaW5"
     LoguearW5.sh "DetectaW5" "A" "${filename} rechazado. Nombre del archivo con formato invalido."
done

for filename in $(ls ${ARRIDIR}); do

   id=$( echo $filename | cut -d '_' -f1 )
   fecha=$( echo $filename | cut -d '_' -f2)


# Verificar que la primera parte del nombre sea un código de sistema existente en el archivo 
# maestro de sistemas (SIS_ID).
     val=$(grep "^${id},.*" ${MAEDIR}sistemas | wc -l)
     if [ $val -eq 0 ]; then
          MoverW5.sh "${ARRIDIR}${filename}" "${RECHDIR}" "DetectaW5" 
          LoguearW5.sh "DetectaW5" "A" "${filename} rechazado. Sistema inexistente."
          continue
     fi

# Verificar que la segunda parte del nombre sea una fecha valida.
     date -d "$fecha" > /dev/null 2>&1
     if [ $? -ne 0 ]; then
          MoverW5.sh "${ARRIDIR}${filename}" "${RECHDIR}" "DetectaW5"
          LoguearW5.sh "DetectaW5" "A" "${filename} rechazado. Fecha invalida."
          continue    
     fi

# Verificar que: Fecha<= fecha corriente (fecha de hoy)
     today=$(date +%Y-%m-%d)
     if [[ $fecha > $today ]]; then
          MoverW5.sh "${ARRIDIR}${filename}" "${RECHDIR}" "DetectaW5"
          LoguearW5.sh "DetectaW5" "A" "${filename} rechazado. Fecha posterior al día de hoy."
          continue
     fi
     
# Verificar que: Fecha >= a la fecha de alta del sistema (SIS_ALTA)
     flag_alta=0 
     for entries in $(grep "^${id},.*" ${MAEDIR}sistemas); do
          alta=$( echo $entries | cut -d ',' -f3 )
          if [[ $fecha = $alta ]]; then
               flag_alta=1 
          fi          
          
          if [[ $fecha > $alta ]]; then
               flag_alta=1
          fi
     done
     
     if [ $flag_alta = 0 ]; then
          MoverW5.sh "${ARRIDIR}${filename}" "${RECHDIR}" "DetectaW5"
          LoguearW5.sh "DetectaW5" "A" "${filename} rechazado. Fecha anterior a la fecha de alta."
          continue
     fi

# Verificar que: Fecha <= a la fecha de baja del sistema (SIS_BAJA)
     flag_baja=0 
     for entries in $(grep "^${id},.*" ${MAEDIR}sistemas); do

          baja=$( echo $entries | cut -d ',' -f4 ) 
          tieneEspacio=$(echo "$baja" | grep -c  "[[:space:]]")
          
	  if [ ${#baja} -eq "0" ] || [ ${tieneEspacio} -eq "1" ]
          then

               baja=$(date +%Y-%m-%d)
          fi

          if [[ $fecha = $baja ]]; then
               flag_baja=1 
          fi
          
          if [[ $fecha < $baja ]]; then
               flag_baja=1 
          fi
     done
     
     if [ $flag_baja = 0 ]; then
          MoverW5.sh "${ARRIDIR}${filename}" "${RECHDIR}" "DetectaW5"
          LoguearW5.sh "DetectaW5" "A" echo "${filename} rechazado. Fecha posterior a la fecha de baja."
          continue
     fi
     
     MoverW5.sh "${ARRIDIR}${filename}" "${ACEPDIR}" "DetectaW5"
#     ./MoverW5.sh "${ARRIDIR}${filename}" "${ACEPDIR}" "DetectaW5"
     LoguearW5.sh "DetectaW5" "I" "OK! ${filename} es un archivo válido."
     
done

if [ $( ls $ARRIDIR | wc -l) = 0  ]; then

    if [ $( ls $ACEPDIR | wc -l) != 0  ]; then

	  q=`ps -ef |grep "BuscarW5" |grep -v "grep"|grep -v $$| wc -l`

          if [ $q = "0" ]; then 
          
               BuscarW5.sh &
        
	            PID_BUSCAR=`ps -ef |grep "BuscarW5" |grep -v "grep"|grep -v $$| wc -l`
	       
		        if [ $PID_BUSCAR != 0 ]; then
					LoguearW5.sh "DetectaW5" "I" "BuscarW5 corriendo bajo el Nro <$PID_BUSCAR>."
				else
					LoguearW5.sh "DetectaW5" "E" "Error al ejecutar BuscarW5."

				fi
			fi

	fi
   
fi

sleep 15s
done ) &




